package com.eco.fanliapp.service;

import com.eco.fanliapp.common.response.ServerResponse;
import com.eco.fanliapp.entity.*;
import com.eco.fanliapp.vo.AppGoodsVo;
import com.eco.fanliapp.vo.HaoDanKuHotKeyInfo.KeyWord;
import com.eco.fanliapp.vo.HaoDanKuSuperClassifyInfo.GeneralClassify;
import com.eco.fanliapp.vo.TbkItemConvertInfo.TbkItemConvertData;
import com.eco.fanliapp.vo.TbkItemInfoGetInfo.NTbkItem;
import com.eco.fanliapp.vo.TbkPrivilegeGetInfo.TbkPrivilege;
import com.eco.fanliapp.vo.TbkScMaterialOptionalInfo.MapData;
import com.eco.fanliapp.vo.respone.ResponeFriendsResults;
import com.eco.fanliapp.vo.respone.ResponeOrderResults.OrderDataBean;
import com.eco.fanliapp.vo.respone.ResponeResults;
import com.taobao.api.response.TbkScPublisherInfoSaveResponse.Data;

import java.util.List;

/**
 * 接口
 *
 * @author xiaoxx
 */
public interface ITaoBaoService {

    /**
     * API
     * 根据关键字获取商品信息列表
     *
     * @param keyword    搜索关键词 支持宝贝ID搜索即keyword=itemid（由于存在特殊符号搜索的关键词必须进行两次urlencode编码）
     * @param shopid     根据店铺id搜索商品 （需要注意的是店铺id搜索暂不支持筛选和排序，如果链接里有关键词和shopid优先搜索店铺id商品）
     * @param back       每页返回条数（请在1,2,10,20,50,100,120,200,500,1000中选择一个数值返回）
     * @param sort       0.综合（最新），1.券后价(低到高)，2.券后价（高到低），3.券面额，4.销量，5.佣金比例，6.券面额（低到高），7.月销量（低到高），8.佣金比例（低到高），9.全天销量（高到低），10全天销量（低到高），11.近2小时销量（高到低），12.近2小时销量（低到高），13.优惠券领取量（高到低），14.好单库指数（高到低）
     * @param cid        0全部，1女装，2男装，3内衣，4美妆，5配饰，6鞋品，7箱包，8儿童，9母婴，10居家，11美食，12数码，13家电，14其他，15车品，16文体
     * @param min_id     分页，用于实现类似分页抓取效果，来源于上次获取后的数据的min_id值，默认开始请求值为1
     * @param price_min  券后价筛选，筛选大于等于所设置的券后价的商品
     * @param price_max  券后价筛选，筛选小于等于所设置的券后价的商品
     * @param sale_min   销量筛选，筛选大于等于所设置的销量的商品
     * @param sale_max   销量筛选，筛选小于等于所设置的销量的商品
     * @param coupon_min 券金额筛选，筛选大于等于所设置的券金额的商品
     * @param coupon_max 券金额筛选，筛选小于等于所设置的券金额的商品
     * @param type       商品筛选类型：type=1是今日上新，type=2是9.9包邮，type=3是30元封顶，type=4是聚划算，type=5是淘抢购，type=6是0点过夜单，type=7是预告单，type=8是品牌单，type=9是天猫商品，type=10是视频单
     * @param userId
     * @return
     */
    ServerResponse<ResponeResults> getSearchKeyWord(
            String keyword, String shopid, Integer back, Integer sort, Integer cid, Integer min_id,
            Integer price_min, Integer price_max, Integer sale_min, Integer sale_max,
            Integer coupon_min, Integer coupon_max, Integer type, Long userId);

    /**
     * API
     * 生成高佣链接
     * @param ItemId 宝贝ID（*必要）
     * @param pid 推广位ID（*必要 需是授权淘宝号下的推广位，如果请求的时候携带了渠道id请求，则该pid需是渠道管理下面的渠道专属推广位）
     * @param relationId 渠道ID
     * @param tbName 授权后的淘宝名称（*必要，多授权淘宝号时用于区分哪个淘宝账户的）
     * @param activityid 阿里妈妈推广券ID （选填）
     * @param me 营销计划（选填）
     * @param accessToken 授权之后的淘宝授权token（选填）
     * @return
     */
    //ServerResponse<HaoDanKuRatesurlInfo> GaoYongPromotionUrlGenerate(long ItemId,String pid,long relationId,String tbName,String activityid,String me,String accessToken);

    /**
     * API
     * 获取超级分类
     */
    ServerResponse<List<GeneralClassify>> getSuperClassify();


    /**
     * API
     * 新---首页二级类目
     */
    ServerResponse getSuperCategory(Integer cid, String appVersion);

    /**
     * API
     * 根据商品标题进行 超级搜索
     * @param keyword 搜索关键词（由于存在特殊符号搜索的关键词必须进行两次urlencode编码）
     * @param back 每页返回条数（请在1,2,10,20,50,100中选择一个数值返回）
     * @param min_id 分页用于实现类似分页抓取效果，来源于上次获取后的数据的min_id值，默认开始请求值为1
     * @param tb_p 淘宝分页 用于实现类似分页抓取效果，来源于上次获取后的数据的tb_p值，默认开始请求值为1
     * @param sort 0.综合，1.最新，2.销量（高到低），3.销量（低到高），4.价格(低到高)，5.价格（高到低），6.佣金比例（高到低）
     * @param is_tmall 是否只取天猫商品：0否；1是，默认是0
     * @param is_coupon 是否只取有券商品：0否；1是，默认是0
     * @param limitrate 佣金比例过滤0~100
     * @return
     */
//	ServerResponse<HaoDanKuSuperSearchInfo> SearchSuperTitle(String keyword,Integer back,Integer min_id,Integer tb_p,Integer sort,
//			Integer is_tmall,Integer is_coupon,Integer limitrate);

    /**
     * API
     * 获取热搜词
     */
    ServerResponse<List<KeyWord>> getSearchHotKey();

    /**
     * API
     * 获取热搜词
     */
    ServerResponse<List<KeyWord>> getHDKHotKey();
    /**
     * API
     * 获取热搜词
     */
    ServerResponse<List<KeyWord>> getHDKHotKeyNew();
    /**
     * API
     * 大家都搜了
     */
    ServerResponse getSearchKey(String keyword);
    /**
     * API
     * 猜你喜欢
     * @param ItemId 获取猜你喜欢的类型商品的宝贝ID，可以优先获取相同二级类目下的商品
     * @return
     */
    //ServerResponse<ResponeResults> getSimilarInfo(String itemId);

    /**
     * 淘宝API
     * 猜你喜欢
     *
     * @param itemId        获取猜你喜欢的类型商品的宝贝ID，可以优先获取相同二级类目下的商品
     * @param pageSize      页大小，默认20，1~100
     * @param pageNo        第几页，默认：1
     * @param deviceValue   设备号
     * @param deviceEncrypt 设备号加密类型：MD5
     * @param deviceType    设备号类型：IMEI，或者IDFA，或者UTDID
     * @return https://open.taobao.com/api.htm?docId=33947&docType=2&scopeId=11655
     */
    List<com.taobao.api.response.TbkDgOptimusMaterialResponse.MapData> getSimilarInfo2(
            Long itemId, String deviceValue, String deviceEncrypt, String deviceType,
            Long pageSize, Long pageNo);

    /**
     * 获取首页类目
     */
    ServerResponse<List<AppGoodsClassify>> getClassify();

    /**
     *  根据首页类目查询商品信息 商品筛选API
     * @param dto
     * @return
     */
    //ServerResponse<ResponeResults> getClassifyItemList(ItemListInfo dto);

    /**
     * API
     * 根据商品ID获取商品详情
     *
     * @param ItemId
     * @param userId
     * @return
     */
    ServerResponse<ResponeResults> getHdkSearchItemIdDetail(String ItemId, Long userId, String channelUserId, String period, Integer isCollect,String activityId);

    /**
     * Eco API
     * 根据商品ID获取商品详情
     *
     * @param ItemId http://taobaoapi.ecostudio.cn/taobao/itemId/itemdetail?itemId=556384325501
     * @return
     */
    ServerResponse<List<NTbkItem>> getSearchItemIdDetail(String ItemId);

    /**
     * Eco API
     * 根据标题查询详情
     * @param title 商品标题
     * @return
     */
    //ServerResponse<List<NTbkItem>> getSearchTitleDetail(String title);

    /**
     * Eco API
     * 拉取订单
     * @param session 淘客的授权session来查订单
     * @param startTime 下单时间
     * @param pageNo 第几页
     * @param tkStatus 订单状态
     * @param orderCountType 订单数据统计类型，1: 2方订单，2: 3方订单，如果不设置，或者设置为1，表示2方订单
     * @param orderQueryType 订单查询类型，创建时间“create_time”，或结算时间“settle_time”。当查询渠道或会员运营订单时，建议入参创建时间“create_time”进行查询
     * @return
     */
    //ServerResponse<List<NTbkOrderDataBean>> getOrderDetail(String session,String startTime,long pageNo,long tkStatus,long orderCountType,String orderQueryType,long orderScene);

    /**
     * Eco API
     * 根据商品ID进行高佣转链
     *
     * @param itemId 商品ID
     * @param userId UserID
     * @return
     */
    ServerResponse<TbkPrivilege> getPrivilegeItemId(Long itemId, Long userId, Integer jumpType);

    /***
     * 高佣转链后返回URL
     */
    ServerResponse<String> getPrivilegeItemURL(String itemId, Long userId, Integer jumpType, String activityId);

    /**
     * Eco API
     * 解析淘口令
     *
     * @param tkl 淘口令
     * @return
     */
    ServerResponse<TbkItemConvertData> TaobaoAnalyzeTklNew(String tkl, AppCompany appCompany, TaobaoScheme taobaoScheme);

    /**
     * Eco API
     * 解析淘口令
     *
     * @param tkl 淘口令
     * @return
     */
    ServerResponse<TbkItemConvertData> TaobaoAnalyzeTkl(String tkl);

    /**
     * Eco API
     * 生成淘口令
     *
     * @param itemTitle 弹窗的标题
     * @param ItemPic   弹窗的图片
     * @param couponUrl 弹窗的商品链接 无优惠券时传s.click.taobao.com开头的链接
     * @return
     */
    ServerResponse<String> TaobaoCreateTkl(String itemTitle, String ItemPic, String couponUrl, Long userId);

    ServerResponse<String> TaobaoCreateTklNew(String itemId, String itemTitle, String itemPic, String shareUrl, Long userId);

    /***
     * 淘宝API
     * 使用渠道备案api获取渠道ID
     * https://open.taobao.com/api.htm?docId=37988&docType=2&scopeId=14474
     */
    //ServerResponse<Data> getRelationId(String inviterCode,long infoType,String note,String sessionKey,Long userId);

    /**
     * 渠道授权
     * Eco 淘宝API
     * 使用渠道备案api获取渠道ID
     * https://open.taobao.com/api.htm?docId=37988&docType=2&scopeId=14474
     *
     * @param inviterCode
     * @param sessionKey
     * @param note
     * @param userId
     * @return
     */
    ServerResponse<Data> getRelationId2(String inviterCode, String sessionKey, String note, Long userId);

    /**
     * 会员授权
     * Eco 淘宝API
     * 使用会员备案api获取会员ID
     * https://open.taobao.com/api.htm?docId=37988&docType=2&scopeId=14474
     *
     * @param inviterCode
     * @param sessionKey
     * @param note
     * @param userId
     * @return
     */
    ServerResponse<Data> getSpecialId2(String inviterCode, String sessionKey, String note, Long userId);

    /**
     * 淘宝API
     * 用户渠道备案信息查询
     * @param infoType 类型，必选 1:渠道信息；2:会员信息
     * @param relationId 渠道独占 - 渠道关系ID
     * @param specialId 会员独占 - 会员运营ID
     * @param relationApp 备案的场景：common（通用备案），etao（一淘备案），minietao（一淘小程序备案），offlineShop（线下门店备案），offlinePerson（线下个人备案）。如不填默认common。查询会员信息只需填写common即可
     * @param pageNo 第几页
     * @param pageSize 每页大小
     * @return
     * https://open.taobao.com/api.htm?docId=37989&docType=2&scopeId=14474
     */
//	ServerResponse<com.taobao.api.response.TbkScPublisherInfoGetResponse.Data> getTaobaoTbkScPublisherInfoGet(String sessionKey,Long infoType,Long relationId,Long specialId,String relationApp,
//			Long pageNo,Long pageSize);

    /**
     * 首页弹窗方法
     *
     * @param str    内容
     * @param type   类型1标题查询淘口令查询3商品ID查询
     * @param userId
     * @return
     */
    ServerResponse<ResponeResults> Popup(String str, Integer type, Long userId);

    /**
     * 首页弹窗搜索方法
     *
     * @param str      内容
     * @param type     类型1标题查询淘口令查询3商品ID查询
     * @param userId
     * @param pageNum
     * @param pageSize
     * @return
     */
    ServerResponse<ResponeResults> popupSearch(String str, Integer type, Long userId, Long pageNum, Long pageSize, String channelUserId);

    /**
     * 首页弹窗搜索方法--新
     *
     * @param str      内容
     * @param userId
     * @param pageNum
     * @param pageSize
     * @return
     */
    ServerResponse<ResponeResults> popupSearchNew(String str, Long userId, Long pageNum, Long pageSize, String channelUserId);

    /**
     * ECO API
     * 超级搜索
     *
     * @param keyword  商品标题
     * @param sort     排序_des（降序），排序_asc（升序），销量（total_sales），淘客佣金比率（tk_rate）
     *                 累计推广量（tk_total_sales），总支出佣金（tk_total_commi），价格（price）
     * @param pageSize 页大小，默认20，1~100
     * @param pageNo   第几页，默认：１
     * @param userId
     * @return https://open.taobao.com/api.htm?docId=35263&docType=2&scopeId=13991
     */
    ServerResponse<List<MapData>> SearchSuperTitle(String keyword, String sort, Long pageSize, Long pageNo,
                                                   Long userId, Boolean hasCoupon);

    /**
     * 维意接口API
     * 获取店铺评分 店铺信息
     */
    //WeiYiInfo getShopMessage(String itemId,String shopType);


    /**
     * 淘宝API 猜你喜欢  调用方法
     *
     * @param itemId
     * @param deviceValue
     * @param deviceEncrypt
     * @param deviceType
     * @param pageSize
     * @param pageNo
     * @param userId
     * @return
     */
    ServerResponse<ResponeResults> getSimilarInfoMethon(
            String itemId, String deviceValue, String deviceEncrypt, String deviceType,
            Long pageSize, Long pageNo, Long userId);

    /**
     * 获取我的订单
     *
     * @param tkStatus
     * @param pageNum
     * @param pageSize
     * @param userId
     * @return
     */
    ServerResponse<List<OrderDataBean>> getMeOrderDetail(Integer tkStatus,
                                                         Integer pageNum, Integer pageSize, Long userId,String orderType,String version);

    /**
     * 获取我的收益-入账中订单-包含自己订单，直接粉丝订单，间接粉丝订单，分享赚订单     tkStatus = 12
     *
     * @param tkStatus
     * @param pageNum
     * @param pageSize
     * @param userId
     * @return
     */
    ServerResponse<List<OrderDataBean>> getMeBookedOrderDetail(Integer tkStatus,
                                                               Integer pageNum, Integer pageSize, Long userId);


    /**
     * 很据订单ID获取订单详情
     *
     * @param orderId
     * @param userId
     * @return
     */
    ServerResponse<List<OrderDataBean>> findOrderIdDetail(String orderId, Long userId);

    /**
     * 获取朋友圈信息
     *
     * @param start
     * @param back
     * @param userId
     * @return
     */
    ServerResponse<List<ResponeFriendsResults>> getFriends(
            Integer start, Integer back, Long userId, Integer companyId);

    /**
     * 超级搜索的返回方法
     *
     * @param keyword
     * @param sort
     * @param pageSize
     * @param pageNo
     * @param userId
     * @return
     */
    ServerResponse<ResponeResults> ReturnSearchSuperTitle(String keyword, String sort, Long pageSize,
                                                          Long pageNo, Long userId, Boolean hasCoupon, String channelUserId, String version,String type);

    /**
     * 大淘客搜索
     *
     * @param keyword
     * @param sort
     * @param pageSize
     * @param userId
     * @return
     */
    ServerResponse<ResponeResults> getDaTaoKeSearchGoods(String keyword, String sort, Long pageSize,
                                                         String pageNum, Long userId, String channelUserId);

    /**
     * 根据首页类目获取商品
     *
     * @param type
     * @param back
     * @param sort
     * @param userId
     * @param free
     * @return
     */
    ServerResponse<ResponeResults> getClassifyItemList(Integer type, Integer start, Integer back, Integer cid, Integer recommend
            , Integer sort, Long userId, Boolean free, Integer companyId);

    /**
     * 朋友圈分享次数自动加
     *
     * @param itemId
     * @return
     */
    void getFriendsCount(Long itemId);

    /**
     * 朋友圈分享次数
     *
     * @param fid
     * @return
     */
    ServerResponse<String> getFriendsCount2(Long fid);

    /**
     * 查询免单商品
     *
     * @param type
     * @param cid
     * @param pageNum
     * @param pageSize
     * @param userId
     * @param companyId
     * @return
     */
    ServerResponse<ResponeResults> getGoodsFreeList(
            Integer type, Integer cid, Integer pageNum, Integer pageSize,
            Long userId, Integer companyId);

    /**
     * 获取榜单商品
     *
     * @return
     */
    ServerResponse<ResponeResults> getSalesList();


    /**
     * 免单商品转链
     *
     * @param itemId
     * @return
     */
    ServerResponse<String> getPrivilegeGoodsFreeItemURL(String itemId, Long userId, Integer jumpType, String type,String activityId);

    /**
     * 获取本地商品
     *
     * @return
     */
    ServerResponse SearchLocalGoods(String keyword, String sort, Integer pageSize, Integer pageNum, Long userid, String fqcat, String channelUserId);

    ServerResponse findKeyword(String keyword);

    List<AppGoodsVo> getAppGoodsVo(Long userid, List<AppGoods> goodsgoods, ResponeResults results, String channelUserId, String version);

    ResponeResults goodsScheme(Long userId, List<AppGoods> goods, String channelUserId);

    /**
     * 获取推荐商品列表
     * pageNum-pageSize 1-20 20-40
     *
     * @return
     */
    ServerResponse getRecommendGoodsNew(Integer pageSize, Integer pageNum, Long userid, String channelUserId, String version);

    /**
     * 获取商品列表--新
     *
     * @return
     */
    ServerResponse getClassifyGoodsListNew(Integer pageSize, Integer pageNum, Integer cid, String sort, Integer type, Long userid, String channelUserId, String version);

    /**
     * 获取商品列表
     *
     * @return
     */
    ServerResponse getClassifyGoodsList(Integer pageSize, Integer pageNum, Integer cid, String sort, Integer type, Long userid, String channelUserId);

    /**
     * 大淘客热搜词
     *
     * @return
     */
    ServerResponse dtkHotSearch();

    List<SyTimePeriodGoods> calculatedGoodsCommission(Long userId, List<SyTimePeriodGoods> syTimePeriodGoodsList);

    void getRedisRecommendGoodsList(List<AppGoods> appGoodsList);
    /**
     * 百川
     * 获取购物车信息 未完成
     */

    /**
     * 百川
     * 获取用户登录信息 未完成
     */

    /**
     * 百川
     * 获取用户订单信息未完成
     */


    /**
     *
     */


}
